// src/utils/request.js
import axios from 'axios';

// 创建 Axios 实例
const service = axios.create({
  baseURL: 'http://localhost:8080', // 设置基础 URL
  timeout: 5000, // 请求超时时间
});

// 请求拦截器：在请求发送之前自动添加 token
service.interceptors.request.use(
  (config) => {
    // 从 localStorage 中获取 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`; // 添加 token 到请求头
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器：统一处理响应错误
service.interceptors.response.use(
  (response) => {
    // 对响应数据进行处理
    return response;
  },
  (error) => {
    // 统一处理错误
    if (error.response) {
      switch (error.response.status) {
        case 401:
          console.error('未授权，请重新登录');
          break;
        case 404:
          console.error('请求的资源不存在');
          break;
        case 500:
          console.error('服务器内部错误');
          break;
        default:
          console.error('请求失败', error.response.status);
      }
    }
    return Promise.reject(error);
  }
);

// 封装 GET 请求
export function get(url, params = {}) {
  return service({
    method: 'get',
    url,
    params, // GET 请求的参数
  });
}

// 封装 POST 请求
export function post(url, data = {}) {
  return service({
    method: 'post',
    url,
    data, // POST 请求的数据
  });
}

export default service;